package com.ww.java8.optional;

import java.util.Optional;

public class CreateOptional {

	@SuppressWarnings("unused")
	public static void main(String[] args) {
		/**
		 * 创建Optional对象，有如下多种方法
		 */
		
		// 1、声明一个空的Optional
		Optional<Car> optCar = Optional.empty();
		
		// 2、依据一个非空值创建Optional
		Car car = new Car();
		Optional<Car> optCar2 = Optional.of(car);
		
		Car car2 = null;
		/**
		 * 如果car是一个null，这段代码就立即抛出一个NullPointerException
		 */
		
//		Exception in thread "main" java.lang.NullPointerException
//			at java.base/java.util.Objects.requireNonNull(Objects.java:208)
//			at java.base/java.util.Optional.of(Optional.java:113)
//			at com.ww.java8.optional.CreateOptional.main(CreateOptional.java:20)
//		Optional<Car> optCar3 = Optional.of(car2);
		
		// 3、可以接受null的Optional
		
		/**
		 * 如果car是null，那么得到的Optional对象就是个空对象
		 */
		Optional<Car> optCar3 = Optional.ofNullable(car2);
	}
}
